import random

stu = []  # 创建空列表
stu_name = 'ABCDEFGHIJKLMNO'

for c in stu_name:
    stu_yz = (c, random.randint(35, 100))  # 随机生成15个在[35，100]区域内的键值对
    stu.append(stu_yz)  # 将学生元组stu_yz加入列表

dict = dict(stu)  # 列表转换成字典
dict1 = sorted(dict.items(), key=lambda x: x[1], reverse=True)  # 按降序进行排序，并打印
print(dict1)

scores = sum([s[1] for s in stu])
avg = scores / len(dict)
print("平均分:{:.2f}".format(avg).center(163))

max_score = max([s[1] for s in stu])  # 找出学生成绩最大值
print("最大值:{:.2f}".format(max_score).center(163))

min_score = min([s[1] for s in stu])  # 找出学生成绩最小值
print("最小值:{:.2f}".format(min_score).center(163))

stu2 = [s[1] for s in stu if s[1] < 60]  # 根据成绩抽取不及格的学生，得到stu2
print('不及格人数:', len(stu2))


def main():
    while True:
        y_or_n = input('是否退出程序(是/否)？')
        if y_or_n == '是':
            print('已退出程序')
            break
        elif y_or_n == '否':
            while True:
                try:
                    name = input("请输入要查询的学生姓名：")
                    if name not in dict:
                        print('请输入正确的学生名字!')
                        continue  # 跳过本次子循环体中剩下尚未执行的语句，立即进行下一次的子循环条件判定
                    else:
                        personal_score = dict[name]  # 找出与 输入的键 相应的值
                        print("该生成绩为：{}".format(personal_score))
                        if personal_score > avg:
                            print("该生成绩属于上等水平")
                        elif personal_score == avg:
                            print("该生成绩属于中等水平")
                        else:
                            print("该生成绩属于下等水平")

                        y_or_n = input('是否退出程序(是/否)？')
                        if y_or_n == '否':
                            continue
                        elif y_or_n == '是':
                            print('已退出程序')
                            return  # 程序结束运行
                        else:
                            print('请输入正确的指令!')
                            break  # 完全结束子循环，开始回到大循环执行代码
                except NameError:
                    print('请输入正确的学生姓名!')
                finally:
                    print('---' * 12)
        else:
            print('请输入正确的指令!')


if __name__ == '__main__':
    main()
